gdkwindow-x11: Add support for gdk_window_fullscreen_on_monitor
authorRui Matos <tiagomatos@gmail.com>
Wed, 2 Nov 2016 18:00:34 +0000 (19:00 +0100)
committerMatthias Clasen <mclasen@redhat.com>
Fri, 4 Nov 2016 16:10:43 +0000 (12:10 -0400)
This way we can recommend that applications use the
fullscreen_on_monitor() API on both X and Wayland otherwise they'd
have to keep a path for each backend to achieve this functionality.

https://bugzilla.gnome.org/show_bug.cgi?id=773857

gdk/x11/gdkwindow-x11.c

index 4c0eddb2d6da3922e00507bb71a9fb36f84c27b9..9d37eb140ec2430f24e46b1517bedbd14c1bb971 100644 (file)
@@ -3956,6 +3956,23 @@ gdk_x11_window_fullscreen (GdkWindow *window)
                                  GDK_WINDOW_STATE_FULLSCREEN);
 }
 
+static void
+gdk_x11_window_fullscreen_on_monitor (GdkWindow *window,
+                                      gint       monitor)
+{
+  GdkRectangle monitor_geom;
+
+  if (GDK_WINDOW_DESTROYED (window) ||
+      !WINDOW_IS_TOPLEVEL_OR_FOREIGN (window))
+    return;
+
+  gdk_screen_get_monitor_geometry (GDK_WINDOW_SCREEN (window), monitor, &monitor_geom);
+  gdk_window_move (window, monitor_geom.x, monitor_geom.y);
+
+  gdk_window_set_fullscreen_mode (window, GDK_FULLSCREEN_ON_CURRENT_MONITOR);
+  gdk_x11_window_fullscreen (window);
+}
+
 static void
 gdk_x11_window_unfullscreen (GdkWindow *window)
 {
@@ -5412,6 +5429,7 @@ gdk_window_impl_x11_class_init (GdkWindowImplX11Class *klass)
   impl_class->maximize = gdk_x11_window_maximize;
   impl_class->unmaximize = gdk_x11_window_unmaximize;
   impl_class->fullscreen = gdk_x11_window_fullscreen;
+  impl_class->fullscreen_on_monitor = gdk_x11_window_fullscreen_on_monitor;
   impl_class->apply_fullscreen_mode = gdk_x11_window_apply_fullscreen_mode;
   impl_class->unfullscreen = gdk_x11_window_unfullscreen;
   impl_class->set_keep_above = gdk_x11_window_set_keep_above;